package org.dmcs.linguistics.labs.parkingmeter;

/**
 * A generic finite state automaton.
 * @author Zielony 
 * @version 1.0
 * @param <InputSymbolType> The type of the input symbols of the automaton.
 * @param <StateType> The type of the state of the automaton.
 */
public interface IAutomaton<InputSymbolType extends Enum, StateType> {
	/**
	 * Przyjmuje symbol wejsciowy automatu, dokonuje odpowiedniego przejscia zgodnie z funkcja przejsc i
	 * zwraca nastepny stan automatu.
	 * @param inputSymbol symbol wejsciowy automatu
	 * @return nowy stan automatu
	 */
	public abstract StateType acceptSymbol(InputSymbolType inputSymbol);

	/**
	 * Zwraca: obecny stan automatu.
	 * @return obecny stan automatu.
	 */
	public abstract StateType getCurrentState();
}